<?php
require_once( ROOT_DATA_ACCESS_OBJECT . 'DataAccessObject.class.php');
require_once( ROOT_DATA_OBJECT . 'DataObject.class.php');

class AtividadeBO extends DataAccessObject {
	
	
	
	function listarAtividades($instanceDB, $codigoProjeto){
		$sqlQuery = "SELECT "; 
		$sqlQuery .= "b.nome AS 'voluntarioResponsavel', "; 
		$sqlQuery .= "a.codigo, a.Projeto_codigo, a.Voluntario_Pessoa_codigo, a.TipoResponsabilidade_codigo, ";
		$sqlQuery .= "a.titulo, a.ordemTarefa, a.dataInicio, a.dataFim, a.dataFimRealizado, a.valorEstimado, a.valorOrcado, a.instrucao, a.prioridade, a.justificativa, ";
		$sqlQuery .= "a.custo, a.situacao ";
		$sqlQuery .= "FROM ";
		$sqlQuery .= "Atividade a, Pessoa b, Voluntario c ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "a.Projeto_codigo = " .$codigoProjeto." AND ";
		$sqlQuery .= "b.codigo = c.Pessoa_codigo AND ";
		$sqlQuery .= "a.Voluntario_Pessoa_codigo = b.codigo ";
		
		$listAtividades = $this->execute( $instanceDB, $sqlQuery, "SELECT" );
		
		return $listAtividades;
	}
	
	function capturarAtividade($instanceDB, $codigoAtividade){
		
		$sqlQuery = "SELECT * FROM Atividade WHERE codigo = " .$codigoAtividade;
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );
	
	}
	
	function inserir( $instanceDB, $dataObject ){
		$codigo = ($this->getMax( $instanceDB, $dataObject->table, "codigo" )+1);
		$dataObject->set("codigo", $codigo);
		$resultado = $this->insert( $instanceDB, $dataObject );
		if ( $resultado ){
			return $this->capturarAtividade( $instanceDB, $dataObject->get("codigo") );
		}
		return FALSE;
	}
	
	function alterar( $instanceDB, $dataObject ){
		return $resultado = $this->update( $instanceDB, $dataObject );
	}
	
	function excluir( $instanceDB, $dataObject ){
		return $this->delete( $instanceDB, $dataObject );
	}
	
		
	//metodo que verifica se existe alguma referencia da atividade na tabela movimento caixa
	function validaExclusao($instanceDB, $codigoAtividade){
		$sqlQuery = "SELECT "; 
		$sqlQuery .= "count(Atividade_codigo) as atividade ";
		$sqlQuery .= "FROM ";
		$sqlQuery .= "movimentoCaixa ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "Atividade_codigo=$codigoAtividade";
		#$sqlQuery .= "Atividade_codigo=1";
		#echo $sqlQuery;
		return $this->execute( $instanceDB, $sqlQuery, "SELECT" );		
	}
	
	
	//Metodo que recebe um liste como parametro e faz a somatoria das atividades estimadas
	function somatoriaAtividades($instanceDB, $listAtividadesComCusto){
		
		$aux = 0.0;
		
		for ($i = 0; $i < count($listAtividadesComCusto); $i++){
			
			$aux += $listAtividadesComCusto[$i]->get("valorEst");
		}
		
		return $aux;		
		
	}
	
	//Tarefas lelex - To utilizando a variavel valorEstiamdo, substituir pelo valorGasto depois
	function somatoriaAtividadesGastos($instanceDB, $listAtividadesGastos){
		
		$aux = 0.0;
		
		
		for ($i = 0; $i < count($listAtividadesGastos); $i++){
			
			$aux += $listAtividadesGastos[$i]->get("valorOperacao");
		}
		
		return $aux;		
		
	}	

	/*
	 * O método responsável por setar 
	 * a data atual no campo dataFimRealizado, indicando o término da atividade. Receberá como 
	 * parâmetro o código da atividade a ser encerrada.
	 */
	function encerrarAtividade ($instanceDB, $codigoAtividade){		
		$sqlQuery = "UPDATE "; 
		$sqlQuery .= "Atividade ";
		$sqlQuery .= "SET ";
		$sqlQuery .= "dataFimRealizado=CURDATE() ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "codigo=$codigoAtividade";
		return $this->execute( $instanceDB, $sqlQuery, "UPDATE" );		
	}
	
	function listarAtividadesSemMovimento($instanceDB, $codigoProjeto){
			
			$sqlQuery = "SELECT ";
			$sqlQuery .= "a.codigo, a.titulo ";
			$sqlQuery .= "FROM ";
			$sqlQuery .= "Atividade a ";
			$sqlQuery .= "WHERE ";
			$sqlQuery .= "a.Projeto_codigo =" .  $codigoProjeto. " AND ";
			$sqlQuery .= "a.codigo NOT IN (SELECT m.Atividade_codigo FROM MovimentoCaixa m WHERE a.codigo = m.Atividade_codigo)";
			return $this->execute( $instanceDB, $sqlQuery, "SELECT" );
		}
	

	function ativarAtividade ($instanceDB, $codigoAtividade){		
		$sqlQuery = "UPDATE "; 
		$sqlQuery .= "Atividade ";
		$sqlQuery .= "SET ";
		$sqlQuery .= "dataFimRealizado = 'NULL' ";
		$sqlQuery .= "WHERE ";
		$sqlQuery .= "codigo=$codigoAtividade";
		return $this->execute( $instanceDB, $sqlQuery, "UPDATE" );		
	}
	

	/*
	 * NAO USADO VINI
	 * function subtrairAtividades($instanceDB, $valoresEstProjetoSemMovimentoCaixa, $valoresOpeProjetoComMovimentoCaixa){
		
		$aux = 0.0;
		
		for ($i = 0; $i < count($valoresEstProjetoSemMovimentoCaixa); $i++){
			
			if($valoresEstProjetoSemMovimentoCaixa[$i]->get("codigo") == 
					$valoresEstProjetoComMovimentoCaixa[$i]->get("codigo"))
			{		
					$aux[$i] += $valoresEstProjetoSemMovimentoCaixa[$i]->get("valorEst") - 
							$valoresEstProjetoComMovimentoCaixa[$i]->get("valorEst");
			}else
			$aux += 0;
		}
		
		return $aux;		
		
	}*/
	
	
	
}
?>
